package com.amoyt.project.service.admin;

import com.amoyt.project.domain.dto.insert.ProjectApprovalAddDto;
import com.amoyt.project.domain.dto.query.ProjectPageQuery;
import com.amoyt.project.domain.dto.update.ProjectApplyUpdateDto;
import com.amoyt.project.domain.dto.update.ProjectApprovalUpdateDto;
import com.amoyt.project.domain.res.Result;

import java.util.List;

/**
 * <p>
 * 项目审批主表（存储申请信息） 服务类
 * </p>
 *
 * @author AmoyT
 * @since 2025-08-24
 */
public interface ProjectService {

    /**
     * 项目列表-自己能查询到的所有
     * @param query
     * @return
     */
    Result listAll(ProjectPageQuery query);

    /**
     * 项目列表-当前账号申请的
     * @param query
     * @return
     */
    Result listCurrApprovalList(ProjectPageQuery query);

    /**
     * 项目列表-当前账号审批的或者审批过的
     * @param query
     * @return
     */
    Result listApprovalList(ProjectPageQuery query);

    /**
     * 项目审批操作
     * @param dto
     * @return
     */
    Result approvalUpdate(ProjectApprovalUpdateDto dto);

    /**
     * 项目申请
     * @param dto
     * @return
     */
    Result doApply(ProjectApprovalAddDto dto);

    /**
     * 项目申请修改
     * @param dto
     * @return
     */
    Result updateApply(ProjectApplyUpdateDto dto);

    /**
     * 可申请项目级别列表
     * @return
     */
    Result queryProjectLevel();

    /**
     * 项目删除
     * @param ids
     * @return
     */
    Result delete(List<String> ids);

    /**
     * 项目详情 包括审批进度以及意见
     * @param projectId
     * @return
     */
    Result queryProjectDetail(String projectId);

    /**
     * 项目审批详情列表，可能不用
     * @param projectId
     * @return
     */
    Result queryProjectApprovalDetail(String projectId);

    /**
     * 近7日审批数据
     * @return
     */
    Result queryProjectTrend();
}
